package cn.tedu.review;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**本类用于练习map案例，统计字符串中字符的个数
 * 需求效果：用户aabbcc，输出{a=2,b=2,c=2}*/
public class TestMap {
    public static void main(String[] args) {
        //1.提示并接受用户输入的字符串
        System.out.println("请您输入要统计的字符串");
        String input = new Scanner(System.in).nextLine();
        //2.准备一个map集合，用来存放出现的字符与字符的次数
        //使用字符作为KEY，因为map中的key不允许重复
        //也就是说字符不允许重复，但出现的次数可以重复
        HashMap<Character , Integer> map = new HashMap<>();//<>泛型里面只能是引用类型，所以用character而不是char

        //3.准备向map中存入数据
        //3.1遍历用户输入的字符串，拿到每个字符
        for (int i = 0; i < input.length(); i++) {
            char key = input.charAt(i);
//            System.out.println(key);//打印查看每轮循环获取到的字符
            Integer value = map.get(key);
            if (value == null){//之前这个字符没有出现过，次数还是Integer的默认值为null
                map.put(key,1);//没出现过，次数设置为1
            }else {//value不是null，说明之前已经存过次数了
                map.put(key,value+1);//出现过，次数就设置为之前的次数+1
            }
        }
        System.out.println("各个字符出现的次数为："+map);
    }
}
